package com.jwsoft.manager.core.integration;

import com.bifang.assistant.common.vo.BaseVO;
import com.bifang.module.base.common.vo.excel.ExcelReadVO;
import com.bifang.module.base.common.vo.excel.ExcelVO;
import com.github.pagehelper.PageInfo;
import com.jwsoft.manager.common.vo.common.AreaControlVO;
import com.jwsoft.manager.common.vo.eduStudentEnrollPre.*;
import com.jwsoft.manager.common.vo.student.StudentInfoSearchVO;
import com.jwsoft.manager.common.vo.student.StudentInfoSelectVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 预采集表业务本地接口
 *
 * @author wangtao
 * @since 2022-11-25
 */
public interface EduStudentEnrollPreIntegration {
    /** 分页查询 */
    PageInfo<EduStudentEnrollPreVO> getList(EduStudentEnrollPreQueryVO vo);
    /** 根据主键查询详情 */
    EduStudentEnrollPreVO getById(EduStudentEnrollPreKeyVO vo);
    /** 保存前统一校验*/
    void checkSave(EduStudentEnrollPreVO vo);
    /** 新增-导入保存 */
    void addExcel(EduStudentEnrollExcelSaveVO vo);
    /**
     * 预采集人员新增：单个
     * **/
    EduStudentEnrollPreVO add(EduStudentEnrollPreVO vo);
    /** 修改 */
    EduStudentEnrollPreVO edit(EduStudentEnrollPreVO vo);
    /**
     * 准新生登记保存 手机端
     * **/
    EduStudentEnrollPreVO savePre(EduStudentEnrollPreVO vo);
    /**
     * 准新生登记保存 手机端 金华模式
     * **/
    EduStudentEnrollPreVO savePreJh(EduStudentEnrollPreVO vo);
    /**
     * 准新生登记修改 手机端金华模式
     * **/
    EduStudentEnrollPreVO editPreJh(EduStudentEnrollPreVO vo);

    /**
     * 准新生扫码登记 手机端
     **/
    EduStudentEnrollPreVO scanningSavePre(EduStudentEnrollPreVO vo);

    /**
     * 根据身份证查询本年度学生登记信息是否存在
     **/
    String checkByIdcard(CheckByIdcardVO vo);
    /**
     * 准新生登记修改 手机端
     * **/
    EduStudentEnrollPreVO editPre(EduStudentEnrollPreVO vo);
    /** 根据主键删除 */
    void del(EduStudentEnrollPreKeyVO vo);
    /**
     * excel批量导入
     * */
    ExcelReadVO readExcel(ExcelVO vo, MultipartFile file);
    /**
     * 学生搜索框搜索
     * **/
    PageInfo<StudentInfoSelectVO> searchStudentSelect(StudentInfoSearchVO vo);

    //预采集审核
    void auditEnrollPre(EnrollPreAuditVO vo);

    void downloadModel(ExcelVO vo, HttpServletResponse response) ;

    void downloadErrorExcel(EnrollPreFileVO vo, HttpServletResponse response) ;

    void downloadData(EduStudentEnrollPreQueryVO vo, HttpServletResponse response) ;
    //app端获取我的当年适龄子女
    List<EduStudentEnrollPreVO> getMyChilds(AreaControlVO baseVO);
    //app端获取我的当年适龄子女金华
    List<EduStudentEnrollPreVO> getMyChildsJh(AreaControlVO baseVO);
    //app端当年适龄子女控制信息获取
    MyChildCheckVO getMyChildCheckVO(AreaControlVO baseVO);

    EduStudentEnrollPreVO getStudentEnrollPreByIdCard(EduStudentEnrollPreQueryVO vo);
    //校验学生年龄是否符合
    Boolean checkAge(CheckAgeVO vo);
    //单个一次准新生登记或修改
    void unLock(EduStudentEnrollPreKeyVO vo);
    //批量解锁一次
    void unLock(AreaControlVO baseVO);

    PageInfo<EduStudentEnrollPreVO> getFamilyFlagList(EduStudentEnrollPreQueryVO vo);

    void updateFamilyFlag(EduStudentEnrollPreQueryVO vo);
    //我的申请记录
    List<MyApplyVO> getMyApplyList(BaseVO baseVO);

    //家长端学生信息登记保存
    EduStudentEnrollPreVO saveStudentInfoByAPP(EduStudentEnrollPreVO vo);

    //管理员端学生信息登记保存
    EduStudentEnrollPreVO saveStudentInfoByAdmin(EduStudentEnrollPreVO vo);

    //重新全量获取大数据
    void resetBigData(ResetBigDataVO vo);

    void resetYbm(ResetBigDataVO vo);
}
